package cn.buk.qms.service;

import cn.buk.common.JsonResult;
import cn.buk.tms.entity.misc.Customer;
import cn.buk.tms.sc.SearchCustomerCriteria;
import cn.buk.tms.dto.*;

import java.util.List;

public interface CustomerService {

	List<Customer> getAllCustomers(int enterpriseId);

	List<CustomerTravelZoneDto> searchCustomerTravelZones(int enterpriseId, SearchCustomerCriteria sc);

	JsonResult saveCustomerTravelZone(int enterpriseId, String username, int customerId, int zoneId, int cityId, int mode);

	/**
	 * 保存企业可以的酒店差旅政策
	 */
  JsonResult saveCustomerTpHotel(int enterpriseId, String username, CustomerTpHotelDto dto);

	List<CustomerTpHotelDto> searchCustomerTpHotels(int enterpriseId, SearchCustomerCriteria sc);

	/**
	 * 删除企业的酒店差旅政策
	 */
	JsonResult deleteCustomerTpHotel(int enterpriseId, String username, int customerId, int id);

  JsonResult saveCustomerTpFlight(int enterpriseId, String username, CustomerTpFlightDto dto);

	List<CustomerTpFlightDto> searchCustomerTpFlights(int enterpriseId, SearchCustomerCriteria sc);

	JsonResult deleteCustomerTpFlight(int enterpriseId, String username, int customerId, int id);

	JsonResult saveCustomerTpCar(int enterpriseId, String username, CustomerTpCarDto dto);

	JsonResult deleteCustomerTpCar(int enterpriseId, String username, int customerId, int id);

	List<CustomerTpCarDto> searchCustomerTpCars(int enterpriseId, SearchCustomerCriteria sc);

	JsonResult saveCustomerTpTrain(int enterpriseId, String username, CustomerTpTrainDto dto);

	JsonResult deleteCustomerTpTrain(int enterpriseId, String username, int customerId, int id);

	List<CustomerTpTrainDto> searchCustomerTpTrains(int enterpriseId, SearchCustomerCriteria sc);

  List<LoginInfoDto> searchCustomerLoginInfos(int enterpriseId, SearchCustomerCriteria sc);


	/**
	 * 保存客户企业部门的审批人
	 * @param userId 当前用户id
	 * @param approverId 审批人的用户id,
	 * @param roleType 角色类型 10-部门经理，20-部门差旅审批人
	 */
	JsonResult saveCustomerDepartmentApprover(int enterpriseId, int userId, int customerId, int departmentId, int approverId, int roleType);

	/**
	 * 删除企业客户的部门差旅审批人
	 * @param userId 当前用户id
	 * @param approverId 审批人id
	 */
  JsonResult deleteCustomerDepartmentApprover(int userId, int approverId);

	/**
	 * 修改企业客户的短信发送模式
	 */
  JsonResult saveCustomerSmsMode(int enterpriseId, int userId, int customerId, int smsMode);


}
